home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue35 / pageprnt / PAGEPRNT.ZIP / PagePrnt / Beta / TestIt / Unit1.pas < prev   
Pascal/Delphi Source File  |  1997-10-30  |  6KB  |  186 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   PagePrnt, ExtCtrls, StdCtrls, Buttons;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     Prn: TPagePrinter;
  12.     Panel1: TPanel;
  13.     btnPreview: TButton;
  14.     lblPage: TLabel;
  15.     btnNextPage: TSpeedButton;
  16.     btnPrevPage: TSpeedButton;
  17.     Label4: TLabel;
  18.     ZoomList: TComboBox;
  19.     ZoomTimer: TTimer;
  20.     btnPrint: TButton;
  21.     procedure btnPreviewClick(Sender: TObject);
  22.     procedure FormShow(Sender: TObject);
  23.     procedure btnNextPageClick(Sender: TObject);
  24.     procedure btnPrevPageClick(Sender: TObject);
  25.     procedure ZoomListKeyPress(Sender: TObject; var Key: Char);
  26.     procedure ZoomListClick(Sender: TObject);
  27.     procedure ZoomTimerTimer(Sender: TObject);
  28.     procedure btnPrintClick(Sender: TObject);
  29.     procedure PrnGetCellFormat(Sender: TObject; const Col: Cardinal;
  30.       var ColInfo: TTableLineColumnInfo);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.   end;
  36.  
  37. var
  38.   MainForm: TMainForm;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. procedure TMainForm.btnPreviewClick(Sender: TObject);
  45. var
  46.    Bitmap: TBitmap;
  47. begin
  48.      with Prn do
  49.      begin
  50.           BeginDoc;
  51.           //Use WriteTableLine
  52.           WriteTableLine('Tiny but cute words are best.|Tiny but cute words are best.|Tiny but cute words are best.');
  53.           WriteTableLine('A man, a plan, a canal: Panama!|A man, a plan, a canal: Panama!|A man, a plan, a canal: Panama!');
  54.           NewLine;
  55.           //Use Write, NewLine, and WriteLine
  56.           Write('First Font');
  57.           Font.Size:=Font.Size+10;
  58.           Write(' Second Font');
  59.           Font.Size:=Font.Size+10;
  60.           Write(' 3rd Font');
  61.           Font.Size:=Font.Size-10;
  62.           Write(' Fourth Font');
  63.           NewLine;
  64.           WriteLine('We can use a NewLine after using Write');
  65.           NewLine;
  66.           //Use WriteLines
  67.           Font.Size:=10;
  68.           WriteLines(False);
  69.           //Do some canvas doodling.
  70.           NewPage;
  71.           WriteLine('These figures will appear in the preview, but they may or may not print on your printer because of limitations with dithering colors in various printer drivers.');
  72.           Canvas.Pen.Color := clRed;
  73.           Canvas.PolyLine([Point(600, 600), Point(900, 600), Point(900, 900), Point(600, 900), Point(750, 750), Point(600, 600)]);
  74.           Canvas.Brush.Color:=clWhite;
  75.           Bitmap:=TBitmap.Create;
  76.           try
  77.              Bitmap.LoadFromFile('TestIt.bmp');
  78.              Canvas.BrushCopy( Rect(1000, 1000, 1000+4*Bitmap.Width, 1000+4*Bitmap.Height),
  79.                                Bitmap, Rect(0,0,Bitmap.Width, Bitmap.Height), clLime);
  80.           finally
  81.                  Bitmap.Free;
  82.           end;
  83.           EndDoc;
  84.           lblPage.Caption:=IntToStr(PageNumber)+' of '+IntToStr(PageCount);
  85.      end;
  86. end;
  87.  
  88. procedure TMainForm.FormShow(Sender: TObject);
  89. begin
  90.      lblPage.Caption:=IntToStr(Prn.PageNumber)+' of '+IntToStr(Prn.PageCount);
  91. end;
  92.  
  93. procedure TMainForm.btnNextPageClick(Sender: TObject);
  94. begin
  95.      if Prn.PageNumber < Prn.PageCount then
  96.      begin
  97.           Prn.PageNumber:=Prn.PageNumber+1;
  98.           FormShow(Sender);
  99.      end;
  100. end;
  101.  
  102. procedure TMainForm.btnPrevPageClick(Sender: TObject);
  103. begin
  104.      if Prn.PageNumber > 1 then
  105.      begin
  106.           Prn.PageNumber:=Prn.PageNumber-1;
  107.           FormShow(Sender);
  108.      end;
  109. end;
  110.  
  111. procedure TMainForm.ZoomListKeyPress(Sender: TObject; var Key: Char);
  112. begin
  113.      if Key = #13 then
  114.      begin
  115.           try
  116.              Prn.ZoomPercent:=StrToInt(ZoomList.Text);
  117.           except
  118.                 on EConvertError do ;
  119.           end;
  120.           Key:=#0;
  121.      end;
  122. end;
  123.  
  124. procedure TMainForm.ZoomListClick(Sender: TObject);
  125. begin
  126.      case ZoomList.ItemIndex of
  127.           0: Prn.ZoomPercent := 200;
  128.           1: Prn.ZoomPercent := 175;
  129.           2: Prn.ZoomPercent := 150;
  130.           3: Prn.ZoomPercent := 125;
  131.           4: Prn.ZoomPercent := 100;
  132.           5: Prn.ZoomPercent := 50;
  133.           6: Prn.ZoomToWidth;
  134.           7: Prn.ZoomToHeight;
  135.           8: Prn.ZoomToFit;
  136.      end;
  137.      ZoomTimer.Enabled:=True;
  138. end;
  139.  
  140. procedure TMainForm.ZoomTimerTimer(Sender: TObject);
  141. begin
  142.      {This kludge is necessary to display the actual zoom percent
  143.      after Fit To Width, Fit To Height, or Whole Page are chosen.
  144.      If you assign something (e.g. ZoomPercent) to TComboBox.Text
  145.      inside of TComboBox.OnClick, it gets overwritten with the
  146.      selected item's text right after the OnClick handler returns.
  147.      To get around this, I made this timer update the text property
  148.      after all the TComboBox event handling is finished.
  149.      If someone knows a better way, please let me know!}
  150.      ZoomTimer.Enabled:=False;
  151.      ZoomList.Text:=IntToStr(Prn.ZoomPercent)+'%';
  152. end;
  153.  
  154. procedure TMainForm.btnPrintClick(Sender: TObject);
  155. begin
  156.      if Prn.PageCount > 0 then
  157.      begin
  158.           if not Prn.Print then
  159.              MessageDlg('You cancelled printing.', mtInformation, [mbOk], 0);
  160.      end
  161.      else
  162.          MessageDlg('There is nothing to print.  Press preview first.',
  163.              mtInformation, [mbOk], 0);
  164. end;
  165.  
  166. procedure TMainForm.PrnGetCellFormat(Sender: TObject; const Col: Cardinal;
  167.   var ColInfo: TTableLineColumnInfo);
  168. begin
  169.      ColInfo.Width:=2;
  170.      if Col = 2 then
  171.      begin
  172.           ColInfo.DrawGrid:=True;
  173.           ColInfo.Alignment:=taRightJustify;
  174.           ColInfo.Text:='This column is formatted by OnGetCellFormat';
  175.           Prn.Font.Style:=[fsBold];
  176.           Prn.Font.Size:=12;
  177.      end
  178.      else
  179.      begin
  180.           Prn.Font.Style:=[];
  181.           Prn.Font.Size:=10;
  182.      end;
  183. end;
  184.  
  185. end.
  186.